#ifndef GY_GRAPHICSRECTWIDTHHEIGHTITEM_H
#define GY_GRAPHICSRECTWIDTHHEIGHTITEM_H

#include <QObject>
#include "Graphics/BasicGraphics/GY_BasicsGraphicsObject.h"

class GY_CONTROLLIBRARY_EXPORT GY_GraphicsRectWidthHeightItem : public GY_BasicsGraphicsObject
{
    Q_OBJECT
public:
    explicit Q_INVOKABLE GY_GraphicsRectWidthHeightItem(const QString &guid,QGraphicsItem *parent = nullptr);
    explicit Q_INVOKABLE GY_GraphicsRectWidthHeightItem(const QString &guid,const QPointF &position,const qreal &width,const qreal &height,QGraphicsItem *parent = nullptr);

    /**
     * @brief updateLeftPoint 更新点位
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updateLeftPoint(const QString &name, const QVariant &value);
    /**
     * @brief updateRightPoint 更新点位
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updateRightPoint(const QString &name, const QVariant &value);
    /**
     * @brief updateTopPoint 更新点位
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updateTopPoint(const QString &name, const QVariant &value);
    /**
     * @brief updateBottomPoint 更新点位
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updateBottomPoint(const QString &name, const QVariant &value);
    /**
     * @brief updateWidthHeightPoint 更新点位
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updateWidthHeightPoint(const QString &name, const QVariant &value);
    /**
     * @brief updatePositon 更新中心点位置
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updatePositon(const QString &name, const QVariant &value);
    /**
     * @brief updateWidth 更新宽度
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updateWidth(const QString &name, const QVariant &value);
    /**
     * @brief updateHeight 更新高度
     * @param name 属性名称
     * @param value 属性值
     * @return 是否更新成功
     */
    bool updateHeight(const QString &name, const QVariant &value);
    /**
     * @brief updatePath 画出路径
     */
    void updatePath();
    /**
     * @brief initializationPropertyInfo 初始化属性
     */
    void initializationPropertyInfo();
};

#endif // GY_GRAPHICSRECTWIDTHHEIGHTITEM_H
